使用Rails 4在链接表中添加数据

时间:2013-11-25 09:31:59

标签: ruby-on-rails ruby-on-rails-4

我有一个Activity表和一个Client表。它们通过表链接(一个客户可以有几个活动,一个活动可以有多个客户)

我对我的项目稍作修改,要求我将Activity的start_date和end_date添加到链接表中。(更容易重复使用)

保存意味着有些不同。我仍然有<%= f.text_field :start_date %>和enddate formfields。我想我可以保留那些(?)。

我更改了控制器并从params方法中删除了:start_date:end_date。但我无法弄清楚如何将它们保存到activities_clients表。

我试过了:

@activity = Activity.new(activity_params)
@activity.start_date = params[:start_date]
@activity.end_date = params[:end_date]

但这给了我super: no superclass method start_date=' for #<Activity:0x6041d60>

我是如何将开始和结束日期添加到activities_clients表的?

2 个答案:

答案 0 :(得分:2)

我认为你所需要的是一个有很多:通过关联(见http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

由于您已将start_dateend_date属性移至连接表,因此您可能无法再在Activity类的实例上调用它们。这是因为底层模型不再具有这些列。

您需要在中间实例上设置它们(假设您的模型类名为ActivityClient):

ActivityClient.create!(
  start_date: ..., 
  end_date: ...,
  client: ...,
  activity: ...)

答案 1 :(得分:0)

在您的控制器中,请添加

@activity.save