无法从Rails中的关联模型中获取值

时间:2014-03-02 22:30:39

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

正在使用的相关项目:Rails 3.2,Mongoid和devise。

我有以下两种模式:

class User
    include Mongoid::Document
    include Mongoid::Timestamps
    has_one :profile, autosave: true, dependent: :delete
    field :account_level
end


class Profile
    include Mongoid::Document
    include Mongoid::Timestamps
    belongs_to :user
    field :display_position
end

我的应用程序已设置,因此在成功注册帐户(用户)后,该人员将自动重定向以创建新的个人资料。 account_level是根据应用程序中的其他逻辑自动定义的。

我希望根据用户模型的display_position自动填充account_level的值。

我已经尝试了各种方法来实现这一点,但我似乎可以解决这个问题。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

正如人们在评论中所说,使用回调:

class User
    include Mongoid::Document
    include Mongoid::Timestamps
    has_one :profile, autosave: true, dependent: :delete
    field :account_level
end


class Profile
    include Mongoid::Document
    include Mongoid::Timestamps
    belongs_to :user
    field :display_position

    before_create do
      self.display_position = self.user.account_level
    end
end

然后在控制台中你可以查看它:

user = User.create( account_level: 'hello')
profile = Profile.create( user: user )
profile.display_position
 => "hello"