Rails的未知属性

问题描述:

我在Rails应用程序得到了一个错误Rails的未知属性

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 

models/order_movie.rb

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

可能是什么问题?

感谢您的帮助

UPDATE

@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

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

belongs_to :order_movie 

has_many :order_movies 

在用户模式。

+0

已经做到了这一点,但得到了同样的错误.. – Felix

+0

我建议你,你把OrderMovie中的关系改为从has_one中的belongs_to ... –

+0

抱歉已经失去了这个。感谢它现在正常工作! – Felix

这里是solution.You已经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 
+0

是的,这是一个问题。修正了那个谢谢。但仍然是相同的错误 – Felix

+0

请通过放置以上两个命令给出结果user = User.find(session [:user_id]) order.user = @user –

+0

你在用户表中有外键吗? –