programing tip

ActiveRecord : 대량 할당 할 수있는 모델의 모든 속성을 얻는 방법은 무엇입니까?

itbloger 2020. 10. 31. 09:26
반응형

ActiveRecord : 대량 할당 할 수있는 모델의 모든 속성을 얻는 방법은 무엇입니까?


대량 할당 할 수있는 모든 속성 이름의 목록을 갖고 싶습니다. 기본적으로 대량 할당 할 수없는 입력 필드를 추가하지 않는 사용자 지정 양식 작성기에 필요합니다.

예를 들어 다음 모델이있는 경우 :

class Post < ActiveRecord::Base
  attr_protected :account

  belongs_to :author

  validates_presence_of :title, :author
end

결과적으로 갖고 싶습니다 [:author, :title].


attr_accessible을 명시 적으로 정의한 경우 Post.accessible_attributes가이를 다룹니다.

Barring, 이와 같은 작업은 투박하지만 작동합니다.

Post.new.attributes.keys - Post.protected_attributes.to_a

앞서 언급 한 답변 중 일부는 Rails 4에 적용되지 않을 수 있습니다.

MyModel.attribute_namesRails의 이러한 측면이 버전 4 http://weblog.rubyonrails.org/2012/3/21/strong-parameters로 변경되므로 테이블 속성 배열을 가져올 있지만 대량 할당 가능한 속성을 제공하지 않을 수도 있습니다 . /


그냥 사용

Post.accessible_attributes

그러면 클래스에서 액세스 할 수있는 모든 속성 이 반환됩니다.


모델의 경우 MyModel.attribute_names또는 MyModel.column_names.

인스턴스의 경우 MyModel.new.attribute_names.


Post.accessible_attributes.to_a.map(&:to_sym)

참고 URL : https://stackoverflow.com/questions/1526066/activerecord-how-to-get-all-attributes-of-a-model-that-can-be-mass-assigned

반응형