rails 4.で1対1の関連付けに問題があります。コードはメソッドの欠落を返していませんが、ゼロになります。私はclass_names、外部キー、プライマリキーを追加しようとしました。私はこれをすべて間違っていると思います。どんな助けもありがとう。コレクションの代わりにnilを返すRailsの一対一の関係
コード
client_submission_data.rb
class ClientSubmissionData < ActiveRecord::Base
belongs_to :client_submissions, class_name: 'ClientSubmission'
end
client_submission.rb
class ClientSubmission < ActiveRecord::Base
belongs_to :clients
has_one :client_submission_data
has_attached_file :csv_file
end
schema.rb
create_table "client_submission_data", force: :cascade do |t|
t.integer "client_submissions_id"
t.text "json"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "client_submissions", force: :cascade do |t|
t.text "json"
t.integer "clients_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "client_id"
t.string "name"
t.string "rows"
t.string "csv_file_file_name"
t.string "csv_file_content_type"
t.integer "csv_file_file_size"
t.datetime "csv_file_updated_at"
end
のコマンド
rails c
cs = ClientSubmission.new
cs.client_submission_data
#=> nil
csd = ClientSubmissionData.new
cs.client_submission_data << csd
NoMethodError: undefined method '<<' for nil:NilClass
cs.client_submission_data = csd
ActiveModel::MissingAttributeError: can't write unknown attribute 'client_submission_id`
私は 'has_one'はコレクションの代わりに1つのオブジェクトしか返さないと思います。なぜなら、空のコレクション配列ではなくなってしまうからです。 –
私は多分それはそれだと思ったが、ClientSubmissionData objをClientSubmissionに適用しようとしたときにNoMethodErrorが返された。私のスキーマがモデルで宣言しているものと一致しないものでなければなりません。 –
それは働いて、ありがとうございました。あなたはどちらも私の質問の一部に答えました。私は答える人を決めることはできません。 –