Rails未知属性

时间:2016-06-08 11:35:53

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

我的导轨应用程序出错了

enter image description here

代码如下所示:

oders_controller.rb

 def payMovie
    @order = OrderMovie.new
    @user = User.find(session[:user_id])
    @order.user = @user
    @movie = Movie.find params[:id]

    puts "sssssssssssss"
    puts @movie.inspect

    @order.price = @movie.movieprice
    @order.currency = @movie.currency
    @order.movie << @movie
    if @order.save
      flash[:notice] = t("flash.saved")
      redirect_to :back
    else
      redirect_to :back
    end
  end

模型/ user.rb

class User < ActiveRecord::Base
  has_many :comment
  has_and_belongs_to_many :knowledgeprovider
  has_and_belongs_to_many :channel
  belongs_to :oder_movie

模型/ order_movie.rb

class OrderMovie < ActiveRecord::Base
  has_one :user
  has_one :movie
end

可能是什么问题?

感谢您的帮助

更新

@order.inspect
<OrderMovie id: nil, price: nil, currency: nil, user_id: nil, created_at: nil, updated_at: nil, movie_id: nil>

@user.inspect
<User id: 3, firstname: "Felix", lastname: "Hohlweglersad"

enter image description here

2 个答案:

答案 0 :(得分:1)

这是解决方案。你在belongs_to拼写错误:order_movie声明

class User < ActiveRecord::Base
  has_many :comment
  has_and_belongs_to_many :knowledgeprovider
  has_and_belongs_to_many :channel
  belongs_to :order_movie


如果您没有order_movie外键,则运行此migratuons

add_column :users,:order_movie_id,:integer
    add_foreign_key :users,:order_movies

答案 1 :(得分:1)

您的用户模型关系不好,如果您尝试制作has_many:通过order_movies用户和电影之间的关系,您的用户必须has_many:order_movies not belongs_to:order_movies。 因此,此错误告诉您在用户表中没有order_movie_id外键,因为您定义了错误的关系。所以改变:

belongs_to :order_movie

has_many :order_movies

在您的用户模型中。