who belongs_to who - 嵌套模型 - rails

时间:2013-06-27 14:48:38

标签: ruby-on-rails database model controller

假设我有一个用户表和一个广告系列表(带有user_id列),并且每个广告系列都有一个创建者(他是一个用户),还有一个成员列表,他们也是(用户)。所以我有

class UsersController < ApplicationController
  has_many :campaigns

class CampaignsController < ApplicationController

  belongs_to :user 
  has_many :users 
  accept_nested_attributes_for :users

但我收到错误:ActionController::RoutingError (undefined method belongs_to'for CampaignsController:Class)`

2 个答案:

答案 0 :(得分:5)

模型关系必须在模型文件中声明,而不是在控制器中声明。 它应该是:

class User < ActiveRecord::Base
  has_many :campaigns


class Campaign< ActiveRecord::Base

  belongs_to :user 
  has_many :users 
  accept_nested_attributes_for :users

答案 1 :(得分:1)

方法#has_many#belongs_to是为ActiveRecord模型而不是ActionPack控制器定义的。

您需要创建模型(使用迁移创建表和列):用户和Camaign并在那里定义关系,在控制器中,您只需获取模型并在视图中显示它们,或使用来自用户的参数更新模型。