2013-06-26 112 views
0

我在我的模型如下關係:如何訪問控制器中的模型嵌套屬性?

  • security_user.rb
has_many :security_users_roles_to_users 
has_many :security_users_roles, through: :security_users_roles_to_users 
accepts_nested_attributes_for :security_users_roles 
  • security_users_roles_to_users.rb

belongs_to :security_user
belongs_to :security_users_role

  • security_users_roles.rb

has_many :security_users_roles_to_users
has_many :security_users, through: :security_users_roles_to_users

的目的是創建用戶和角色模型之間的許多一對多的關係。

當創建一個新用戶時,我想設置爲默認角色(例如用戶)。所以,在我security_users_controller.rb,在創建行動,我有:

@security_user = SecurityUser.new(params[:security_user]) 
@security_user.security_users_roles.role = 'user' 

,但我得到了以下錯誤:未定義的方法`角色=」爲...

爲什麼我無法以上述方式訪問屬性?

注意:我沒有傳遞來自用戶角色的任何信息。

回答

1

問題是@security_user.security_users_roles是一個ActiveRecord關聯,所以你不能設置角色。

試着這麼做

@security_user.security_users_roles_to_users.build(security_users_role: SecurityUsersRole.find_by_role('user')) 
+0

謝謝,但我得到了下面的錯誤 - 你不能調用創建除非家長有保存應用程序/控制器/ security_users_controller.rb。另外,使用構建,它似乎在伎倆,但也許我沒有做正確的想法。在我的角色模型中,我應該有一個記錄「用戶」,所以也許我需要在連接表中添加記錄以標記該用戶是否處於此角色? – gotqn

+0

是的,我犯了一個錯誤,檢查更新的答案! –

+0

Mxm,我收到此錯誤 - 無法批量分配受保護的屬性:security_users_role。你有什麼想法是什麼導致它? – gotqn

相關問題