2014-10-22 62 views
1

我正在处理最近更新的旧旧项目。该项目的模型是在一个引擎运行与控制器和视图等单独运行。引擎运行轨道4.1.6,而控制器等在轨道3上。Rails:列出所有不能大量分类的属性

这导致许多问题与集体作业。我创建了一个读取数据库列的小模块,并列出了该模型的属性。但是,在这种NewsItem模型中,如果该NewsItem模型具有关联并且需要接受这些关联的属性,则该模块不起作用。

class Newsitem < ActiveRecord::Base 

    include MyAttrAccessibleModule 

    has_and_belongs_to_many :assets 
    has_and_belongs_to_many :boroughs 
    has_and_belongs_to_many :venues 

我需要添加

attr_accessible :asset1_attachment_remove, 
        :asset1_attachment_title, 
        :asset2_attachment_title, 
        :asset3_attachment_title, 
        :asset4_attachment_title, 
        :borough_ids, 
        :venue_ids 

但发现需要,这是一个有点痛,看到有超过100

全系车型有没有办法来突出,发现,测试,发现在其他模型中也可能出现这种错误?

干杯

回答

2

我想你要寻找的可能是这样的:

Object.attributes.keys - Object.accessible_attributes 

这应该减去所有可用选项的所有列入白名单属性。

0

感谢@Stefan Dorunga的建议。它使我朝着正确的方向前进。

if reflect_on_all_associations(:has_and_belongs_to_many).any? 
    association = reflect_on_all_associations(:has_and_belongs_to_many) 
    association.each {|model| attr_accessible model.plural_name.singularize + "_id"} 
    association.each {|model| attr_accessible model.plural_name} 
end 

我查询模型,看它是否具有这样的关系id心不是明确列出的关系,并动态地生成它。

唯一的缺点是我必须在所有列出的关联之后包含模块。我通常在课程的顶部包含模块。这是否是标准做法我不知道。

相关问题