Ruby không biết bạn đang cố gắng gọi một phương thức có tên là alias
hoặc bí danh một phương thức như một phương thức khác và mặc định là phương thức thứ hai. Bạn có thể phân biệt bằng cách thực hiện
self.alias "dummy"
tức là, bằng cách chỉ định rõ người nhận. Đây thường là cách để đi trong các trường hợp khác, nơi nó không rõ ràng cho dù bạn đang gọi một phương pháp hoặc làm điều gì đó khác, ví dụ:
self.foo = 'bar'
để gọi phương thức foo=
thay vì tạo biến cục bộ được gọi là foo.
Đối với một small number of field names điều này sẽ không hoạt động. DSL của nhà máy nữ sử dụng method_missing
vì vậy nếu đối tượng DSL có một phương thức của tên đó, nó sẽ được gọi thay thế. Trong những trường hợp bạn có thể làm những gì các đường DSL bình thường làm cho bạn và gọi add_attribute
trực tiếp:
FactoryGirl.define do
factory :blah do
add_attribute :name, "some value"
end
end
cũng giống như
FactoryGirl.define do
factory :blah do
name "some value"
end
end
Nguồn
2012-02-16 10:51:10
Sử dụng 'self.alias'. Tôi đã tích cực tôi đã thử mặc dù vậy. (-: Thanks! –
Chỉ có vấn đề này, nơi mô hình của tôi có một thuộc tính được gọi là "end". 'Self.end' làm cho nó hoạt động. – GMA
Chết tiệt, điều này không làm việc cho các trường có tên' phương thức'. –