首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 4.2 belongs_to关系和before_create回调不设置模型

Rails 4.2 belongs_to关系和before_create回调不设置模型
EN

Stack Overflow用户
提问于 2015-04-13 18:05:03
回答 1查看 401关注 0票数 0

我有一个类Clientbelongs_to另一个类Account

Account只处理对一个帐户进行身份验证和分发一个API密钥,并且有许多类型的用户可以拥有一个帐户。我有一个before_create回调,当Account调用create方法时,它会创建一个createClientAccount实例都被适当地创建(或不创建),但是account_id列没有被设置。

有关守则如下:

代码语言:javascript
运行
复制
class Client < ActiveRecord::Base
  belongs_to :account, ->{includes :api_key}
  accepts_nested_attributes_for :account
  before_create :generate_account

  private

  def generate_account
    self.account = Account.create(password: :password, password_confirmation: :confirm_password)
  end
end 

在rails控制台中,我运行Client.create("email"=>"XXXXXXX", "account_attributes"=>{"password"=>"password","password_confirmation"=>"password"})

产出如下:

代码语言:javascript
运行
复制
(24.5ms)  BEGIN
  SQL (29.4ms)  INSERT INTO `accounts` (`password_digest`, `created_at`, `updated_at`) VALUES ('XXXXXXXXXX', '2015-04-13 17:50:36', '2015-04-13 17:50:36')
  Client Exists (29.6ms)  SELECT  1 AS one FROM `clients` WHERE `clients`.`account_id` IS NULL LIMIT 1
  SQL (32.1ms)  INSERT INTO `clients` (`email`, `created_at`, `updated_at`) VALUES ('XXXXXXX', '2015-04-13 17:50:36', '2015-04-13 17:50:36')
   (42.0ms)  COMMIT

控制台输出它的响应:#<Client id: 6, email: "XXXXXXXXX", account_id: nil, created_at: "2015-04-13 17:50:36", updated_at: "2015-04-13 17:50:36">

EN

Stack Overflow用户

回答已采纳

发布于 2015-04-13 18:31:09

客户端模型的accepts_nested_attributes_for设置应该自动为您处理帐户创建和关系设置。尝试取出generate_account回调,看看这是否有帮助。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29612065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档