我是铁轨新手。本地一切都很好,但在heroku上部署后,出现了上述错误。
以下是post_controllers操作:
def new
@post = current_user.posts.build
end
这是schema.rb文件的内容:
ActiveRecord::Schema.define(version: 20160516214156) do
create_table "comments", force: :cascade do |t|
t.text "comment"
t.integer "post_id"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "comments", ["post_id"], name: "index_comments_on_post_id"
add_index "comments", ["user_id"], name: "index_comments_on_user_id"
create_table "posts", force: :cascade do |t|
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.integer "user_id"
end
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
我也有同样的错误。为了解决这个问题,我指定了has_many关系的:foreign_key
。
我的案例:
class Assay::Attempt::Answer < ActiveRecord::Base
belongs_to :assay_attempt, class_name: 'Assay::Attempt'
end
class Assay::Attempt < ActiveRecord::Base
has_many :answers, foreign_key: :assay_attempt_id # there wasn't foreign_key option
end
我在Rails 4.2.0上也遇到了这个问题,在我的情况下,一切似乎都很好,因为我指定了foreign_key,所以当foreign_key和foreign_type被指定为字符串而不是符号时,解决了这个问题:
has_many :answers, foreign_key: :assay_attempt_id #this was not working
has_many :answers, foreign_key: 'assay_attempt_id' #this was ok