0

私はservice_providerserviceモデルのプログラムを持っています。 service_providerhas_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です

私はサーバーを再起動し、運がないとデータベースをリセットしようとしました。

+0

「current_service_provider」のコードはどこですか? –

+0

現在service_providerにサインインしているのは[devise](https://github.com/plataformatec/devise)ヘルパーです – Ritwick

+1

すべてがうまく見えますが、 'service.rb'と' rake db:migrate'から 'attr_accessor'を削除してみてくださいyr serverを再起動します。 – 7urkm3n

答えて

0

@Petrはそれが(それにnilのための2回目の呼び出し)よりも優先されます述べたようにジャスト

rails sその後、rake db:migrate

service.rbから attr_accessor :service_provider_idを削除します。

関連する問題