【发布时间】:2015-05-01 09:36:56
【问题描述】:
我使用的是 rails 4.2 版和 ruby 2.2.0 版。我正在尝试将记录保存到 lollypops 表。没有例外说明原因。
任务:创建并保存member 后,我想通过在成员控制器的create 方法中调用create_lollypop(@member.id) 来填充lollypops 表,如下所示:
# POST /members
# POST /members.json
def create
@member = Member.create(members_params)
return unless request.post?
@member.save!
self.current_user = @member
c = Country.find(@member.country_id)
@member.update_attributes(
:country_code=>c.code)
create_lollypop(@member.id) #From here I want to create lollypop
MemberMailer.signup_notification(@member).deliver_now
redirect_to(:controller => '/admin/members', :action => 'show',
:id=> @member.id)
flash[:notice] = "Thanks for signing up! Check your email now to
confirm that your email is correct!"
rescue ActiveRecord::RecordInvalid
load_data
render :action => 'new'
end
def create_lollypop(member_id)
@member = Member.find(member_id)
Lollypop.create(
:member_id=>@member.id,
:product_name=>'lollypop',
:product_price=>100,
:email=>@member.email,
:house_flat => @member.house_flat,
:street=>@member.street,
:city_town=>@member.city_town,
:country =>@member.country,
:postcode_index=>@member.postcode_index,
:name=>@member.name)
end
“成员”已创建,但“棒棒糖”表未填充。这些关联是:
会员模型:
has_one :lollypop, :dependent=>:destroy
LOLLYPOP 模型
belongs_to :member
如果我使用通用 SQL 命令,则会填充 lollypops 表,但我不想这样做:
def self.create_lollypop(member_id)
member = Member.find(member_id)
ActiveRecord::Base.connection.execute("insert into lollypops (member_id,product_name,product_price,email,house_flat,street,city_town,country,postcode_index,name)
values(#{member.id},'lollypop',#{100},'#{member.email}','#{member.house_flat}','#{member.street}','#{member.city_town}','#{member.country_code}','#{member.postcode_index}','#{member.name}')")
end
欢迎任何建议。谢谢。
【问题讨论】:
-
棒棒糖模型中是否有一些验证?
-
将
Lollypop.create更改为Lollypop.create!,你没有处理失败,所以这会引发错误,这是找出问题的最简单方法。 -
你能检查一下你的“create_lollypop()”吗,你正在使用“@member”。
标签: mysql ruby-on-rails ruby database controller