一举创建rails嵌套对象

时间:2015-05-16 09:08:04

标签: ruby-on-rails activerecord

我需要一个api密钥来保存用户,我需要一个user_id来保存api_key ......我可以同时做两个吗?

user.api_key = ApkiKey.generate_token
user.save
user.api_key.user_id = user.id
user.api_key.save

2 个答案:

答案 0 :(得分:2)

如果api_keybelongs_touser的关系,那么以下内容将有效

user.api_key = ApkiKey.generate_token
user.api_key.user_id = user.id
user.save

user.save也会触发user.api_key.save

答案 1 :(得分:1)

我最终做了以下事情:

#api_key.rb
before_create :generate_access_token
def generate_access_token
    begin
        self.access_token = SecureRandom.hex
    end while self.class.exists?(access_token: access_token)
end

#user.rb
before_create do |user|
    user.api_key = ApiKey.create(user_id: user.id)
end

问题是我在创建用户之前不认为我可以访问user.id,但显然它可以工作。感谢@Hardik的抬头