【问题标题】:Bypass attr_accessible in seeds.rb绕过 seed.rb 中的 attr_accessible
【发布时间】:2012-05-27 00:39:03
【问题描述】:

在创建种子数据时,我真的找不到绕过 attr_accessible 的干净方法。我希望能够毫无问题地使用批量分配,因为我知道这个种子文件是完全安全的。

有没有一种干净的方法可以强制 Rails 3 接受这些?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

这是一个快速的 hack(感谢 Mike),把它放在你的种子.rb 的顶部:

# Dodge the mass assignment
User.send(:attr_accessible, :username)
User.send(:attr_accessible, :admin)

现在您可以轻松调用它而不会弄乱您的模型(使用 :as => :seed):

@user = User.find_or_create_by_username(:username => 'ryanonrails', :admin => true)

【讨论】:

  • 这太棒了,因为使用 find_or_create_by 时 ":as => :seed" 不起作用!
【解决方案2】:
#in model
attr_accessible :name, :role,.... :as => :seed

#in seed.rb
model.assign_attributes({name: "Putin", role: "president"....},:as => :seed)
model.save

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多