0
私はservice_provider
とservice
モデルのプログラムを持っています。 service_provider
はhas_many
アトリビューションを使用し、service
モデルはbelongs_to
アトリビューションを使用します。 service_provider
はdeviseを使用して作成されました。 create
メソッドでサービスにservice_provider_id
を割り当てることができません。適切なidを割り当てないレール
services_controller.rb
def create
@service = Service.new(service_params)
@service.service_provider_id = current_service_provider.id
respond_to do |format|
if @service.save
format.html { redirect_to @service, notice: 'Service was successfully created.' }
format.json { render :show, status: :created, location: @service }
else
format.html { render :new }
format.json { render json: @service.errors, status: :unprocessable_entity }
end
end
end
でメソッドを作成し、レールコンソールは、すべてのサービスのためにservice_provider_id: nil
を与えます。
ここ
create_table "service_providers", 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 "service_providers", ["email"], name: "index_service_providers_on_email", unique: true
add_index "service_providers", ["reset_password_token"], name: "index_service_providers_on_reset_password_token", unique: true
create_table "services", force: :cascade do |t|
t.integer "service_provider_id"
t.string "service_name"
t.text "description"
t.integer "price"
t.string "location"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "services", ["service_provider_id"], name: "index_services_on_service_provider_id"
ここservice.rb
モデル
class Service < ActiveRecord::Base
attr_accessor :service_provider_id
belongs_to :service_provider
validates_presence_of :description, :location, :service_name, :price
end
そして「service_provider.rb`
class ServiceProvider < ActiveRecord::Base
has_many :services
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
だ "
t.belongs_to :service_provider, index: true
"
service_provider_id
は、マイグレーションを使用して作成された
schema.rb
です
私はサーバーを再起動し、運がないとデータベースをリセットしようとしました。
「current_service_provider」のコードはどこですか? –
現在service_providerにサインインしているのは[devise](https://github.com/plataformatec/devise)ヘルパーです – Ritwick
すべてがうまく見えますが、 'service.rb'と' rake db:migrate'から 'attr_accessor'を削除してみてくださいyr serverを再起動します。 – 7urkm3n