我需要外国身份证或不同的活动记录协会吗?

时间:2013-08-17 05:27:52

标签: ruby-on-rails activerecord foreign-keys

我被我的Rails应用程序难倒了。我创建了3个模型:user, event, category,它们具有以下关联:

class User
  has_many :events, :dependent => :destroy
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me

class Category
  attr_accessible :name
  has_many :events

class Event
  attr_accessible :address, :cost, :date, :details, :end_time, :fav, :start_time, :title, :venue
  belongs_to :user
  belongs_to :category, :foreign_key => :name #not sure if this foreign key is working

我们的想法是Users创建events,这些category归档于一个belongs_to :category, :foreign_key => :name下。这些类别已预先填充,因此用户无法制作这些类别,只选择要提交的类别。

我的用户和事件关联已经工作了一段时间,但是因为我添加了类别模型,所以当我尝试时,我得到“无法大量分配受保护的属性:类别”错误创建一个新事件。

我一整天都在浏览网页,似乎无法跟踪错误。我尝试在Event课程中使用@event = current_user.events.new(params[:event])添加外键,但似乎没有帮助。

慷慨地感谢正确方向的任何帮助,解决方案和/或指示!

编辑2:我是Rails的新手,但我想我已经从错误屏幕上找到了问题所在。说“ ActiveModel :: MassAssignmentSecurity :: EventsController中的错误#create ”并进一步说“ app / controllers / events_controller.rb:58:in create ”,这相当于此代码行:category

如果我正确读取它,那就意味着发生错误,因为我正在尝试使用散列中传递的def create @event = current_user.events.new(params[:event]) respond_to do |format| if @event.save format.html { redirect_to @event, notice: 'Event was successfully created.' } format.json { render json: @event, status: :created, location: @event } else format.html { render action: "new" } format.json { render json: @event.errors, status: :unprocessable_entity } end end end 参数创建一个新事件,并且它不知道如何处理它。不幸的是,我不知道该做什么......

编辑3:根据要求,这是事件控制器的创建操作:

{{1}}

2 个答案:

答案 0 :(得分:0)

:foreign_key => :name放入class User或将attr_accessible提供给class User

答案 1 :(得分:0)

在事件模型中添加:类别到attr_accessible。 使用名称作为外键是一个坏主意,因为它不是唯一的

对于与用户和类别有关系的创建活动,您可以这样做:

user.events.build do |event|
    event.category = category
end

category.events.build do |event|
    event.user =user
end

此外,您可以使用方法创建