분명히 저는 레일에 새로운 것이므로 나와 함께 할 수 있습니다.레일스는 매개 변수를 '새'메서드로 전달합니다.
나는 나의 모델
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
과 나를 위해 엉망이 물건의 종류에 생성자를 추가했습니다. 내가 방법을 했어 befor을이
def new
@movies = Movie.new
end
처럼 내 컨트롤러와 초기화가 나타나기 전에 잘했다 '새로운'. 매개 변수가 '새'메소드로 전달되어야하지만 사용자가 인수를 전달하고 저장하는보기가 열린 후에 완료해야합니다. 내가 오류를
wrong number of arguments (0 for 3)
생성자가 추가되었습니다를 얻을 수 있기 때문에 지금은 때문에 내 응용 프로그램에 대한 테스트를을 writting 그 시험을 무효로합니다 생성자에 대한 기본 vaules 설정 시작 사실에 해당 뷰를 열 수 없습니다. 이것에 대한 제안?
편집 : 내 테스트는 다음과 같이 : ActiveModel에서 제공
모든 테스트가 실패하는 생성자없이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
....
제안 : 테스트 용 기본값을 설정하기 만하면 기본값을 설정하는 방법을 제공하고 응용 프로그램 코드로 유출하지 않는 테스트 팩토리를 사용하십시오. 다른 이유로이 작업을 수행해야하는 경우 [이 질문 참조] (http://stackoverflow.com/questions/328525/what-is-the-best-way-to-set-default-values-in-activerecord) – numbers1311407
나는 내 시험에서 논쟁을하다. 문제는 아닙니다. 테스트는 3 개 미만의 인수가 있는지 확인하고, 생성자를 추가해야만 했으므로이 문제가 발생했습니다. –
좋습니다, 새로운 제안 : 아무런 이유없이 핵심 active_record 기능을 깨뜨리는 테스트를 작성하지 마십시오. 널리 사용되는 레일 구성 요소의 코드 카운터를 수정해야합니다. 'ActiveRecord :: Base # initialize'는 인수 목록이 아닌 매개 변수 객체를 받아들입니다. 당신이 active_record와 같은 중요한 조각을 깨뜨리려고한다면, 이것은 당신을위한 많은 문제 중 첫 번째가 될 것입니다. – numbers1311407