Ruby on rails 需要解释归属于关联详细参考构建关联(属性={})

Ruby on rails 需要解释归属于关联详细参考构建关联(属性={}),ruby-on-rails,associations,Ruby On Rails,Associations,我有两个模型 user.rb class User < ActiveRecord::Base has_many :trial_subscriptions attr_accessible :trial_subscriptions_attributes end 我试图使用活动记录指南中的4.1.1.3 build_关联(attributes={})来构建用户。我需要更详细的解释 在我的rails控制台中,我正在执行以下操作,并对其进行推理 @subscription = Tri

我有两个模型

user.rb

class User < ActiveRecord::Base

  has_many :trial_subscriptions
  attr_accessible :trial_subscriptions_attributes

end 
我试图使用活动记录指南中的
4.1.1.3 build_关联(attributes={})
来构建用户。我需要更详细的解释

在我的rails控制台中,我正在执行以下操作,并对其进行推理

@subscription = TrialSubscription.new() #creating a new object
@user = @subscription.build_user(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')#building the user
@user.save #saving the user permanently
User.last #saved user shows up
@a = User.last
@a.trial_subscriptions
但当我做以下事情时

@subscription = TrialSubscription.new() #creating a new object
@user = @subscription.build_user(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')#building the user
@user.save #saving the user permanently
User.last #saved user shows up
@a = User.last
@a.trial_subscriptions
我得到一个空数组

当我这样做的时候

Trial_Subscription.last, there is no extra record (the TrialSubscription.new ? ) 
我希望最后的试用版订阅记录会有它的

user_id #be filled in with the build user that I just created.
解释一下就好了

这些代码将被发送到我的试用版订阅控制器上,并且会有一个表单发布用户输入的信息

我也注意到我可以做一个

@user.trial_subscriptions.create!() #and then maybe a @user.save

但我觉得第一种方法应该行得通

让我们先看一下您的两种型号:

# app/models/user.rb
class User < ActiveRecord::Base
  has_many :trial_subscriptions
  attr_accessible :trial_subscriptions_attributes
end

# app/models/trial_subscription.rb
class TrialSubscription < ManualSubscription
end
使用此设置,您应该能够创建具有关联试用订阅的用户,如下所示:

@user = User.new(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')
@subscription = @user.trial_subscriptions.build
@user.save #saving the user permanently

User.last // Shows last user
User.last.trial_subscriptions #shows last users trial subscriptions
使用通过试用订阅创建用户的方法,您需要在
试用订阅
模型中定义
接受
的嵌套属性和
属性可访问


希望这是有帮助的

这很有帮助,实际上我已经为和
attr accessible
正确定义了
accepts\u嵌套的属性。我不知道你可以做一个
用户。新建
并生成订阅,而不是做
试用订阅。新建
并生成用户。通常,你想用另一种方法,即使用模型和
有许多
来创建关联,因为在用户可以订阅之前,首先存在的是用户。但这并不意味着你不能换一种方式来做。我怎么能换一种方式来做呢?我想通过用户来构建它,创建一个表单并嵌套属性,但是用户是通过一个注册表单在designe注册控制器中创建的。我在Desive中创建两个注册表单时遇到问题。我发布了一些关于这个的问题,如果你知道Desive的话。我可以考虑用另一种方式来建立它,而不是先做一个用户。
@user = User.new(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')
@subscription = @user.trial_subscriptions.build
@user.save #saving the user permanently

User.last // Shows last user
User.last.trial_subscriptions #shows last users trial subscriptions