通过控制台在关联模型中插入记录

时间:2012-10-15 07:30:06

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我有2个表用户和成员,那里有关系 在用户

  

has_one:member,:class_name => “用户::会员”   会员   belongs_to:user

我正在尝试使用控制台插入数据,而我正在使用此代码

 u = User.create(
    :group         => UserGroup.find_by_slug(:members),
    :first_name    => 'abc',
    :last_name     => 'fgh',
    :company_name  => 'xyz',
    :email         => 'test@test.com',
    :password      => '123456',
    :password_confirmation => '123456'
    )   
 m = User::Member.create(
    :user           => u,
    :pricing_plan   => PricingPlan.order('RANDOM()').first,
    :state          => UserState.order('RANDOM()').first,
    :industry       => Industry.order('RANDOM()').first,
    :fy_start_month => 7
    )

抛出此错误

  

语法错误,意外的tIDENTIFIER,期待$ end                   )m = User :: Member.create(

我想知道我的语法有什么问题。提前谢谢

3 个答案:

答案 0 :(得分:2)

这可能是由于一个不可见的字符(不是空格)。您的语法似乎没问题,但如果您的编辑器允许您显示不可见(例如,在textmate中,请转到查看&gt;显示隐形,尝试这样做。有时我会插入隐形而不是空格。< / p>

给你一个我正在谈论的印象:

这是隐藏的隐藏

enter image description here

这是显示的隐形。您在正常模式下看不到的不可见含片会导致语法错误:

enter image description here

答案 1 :(得分:0)

我假设user_id是与foreign key表关联的users。 如果是这样,请使用以下

m= Member.create(
    :user_id           => u.id,
    :pricing_plan   => PricingPlan.order('RANDOM()').first,
    :state          => UserState.order('RANDOM()').first,
    :industry       => Industry.order('RANDOM()').first,
    :fy_start_month => 7
    )

答案 2 :(得分:0)

试试这个

在您的用户模型中

  has_one :member
  attr_accessible :member_attributes
  accepts_nested_attributes_for :member

在您的会员模型中

  belongs_to :user

然后在您的控制台和表单中尝试

user = User.create(
  :group         => UserGroup.find_by_slug(:members),
  :first_name    => 'abc',
  :last_name     => 'fgh',
  :company_name  => 'xyz',
  :email         => 'test@test.com',
  :password      => '123456',
  :password_confirmation => '123456'
 )

user.build_member(
 :pricing_plan   => PricingPlan.order('RANDOM()').first,
 :state          => UserState.order('RANDOM()').first,
 :industry       => Industry.order('RANDOM()').first,
 :fy_start_month => 7
)

member = Member.create(
  :user_id           => user.id,
  :pricing_plan   => PricingPlan.order('RANDOM()').first,
  :state          => UserState.order('RANDOM()').first,
  :industry       => Industry.order('RANDOM()').first,
  :fy_start_month => 7
)