明らかに、私はレールにまったく慣れていないので、私に固執してください。
モデルにコンストラクターを追加しました
class Movie < Media
attr_accessible :director, :studio
attr_accessor :director, :studio
validates_presence_of :director, :studio, :title
def initialize title, director, studio
@title = title
@director = director
@studio = studio
end
end
そして、そのようなめちゃくちゃなこと。このようにコントローラーに「新しい」メソッドを作成する前に
def new
@movies = Movie.new
end
初期化が行われる前にうまく機能しました。パラメータを「new」メソッドに渡す必要がありますが、これは、ユーザーから引数を渡して保存するためにビューが開かれた後に行われました。エラーが発生したため、そのビューを開くことができません
wrong number of arguments (0 for 3)
アプリケーションのテストを書き始めたため、コンストラクターが追加されました。コンストラクターのデフォルト値を設定すると、そのテストが無効になります。これを解決するための提案?
編集:私のテストは次のようになります:
require 'spec_helper'
describe Movie do
before :each do
@movie = Movie.new "Bullet", "John", "20th"
end
describe "#{new}" do
it "returns new object of Movie" do
@movie.should be_an_instance_of Movie
end
it "throws ArgumentError when give less than 3 parameters" do
lambda {Movie.new(:director => "John", :studio => "20th")}.should raise_exception ArgumentError
end
end
describe "#title" do
it "returns the correct title" do
@movie.title.should eql "Bullet"
end
end
describe "#director" do
it "returns the correct director" do
@movie.director.should eql "John"
end
end
describe "#studio" do
it "returns the correct studio" do
@movie.studio.should eql "20th"
end
end
end
そのコンストラクターがないと、すべてのテストが失敗します....