has_one i new

Cześć,
mam dwa modele,
has_one :mark oraz has_one :student

Mark oczywiscie ma pole student_id. Może mi ktoś powiedzieć dlaczego nie działa metoda

@student = Student.find(1) @MARK = @student.mark.new
Nie rozumiem tego. Student.find(1).mark działa tak samo jak Mark.new

OCb? Wyrzuca błąd nieznana metoda new

oba mają ustawione has_one? jeżeli Mark ma pole student_id, to

[code=ruby]class Mark < AR::Base
belongs_to :student
end

class Student < AR::Base
has_one :mark
end[/code]

A błąd w poście. Student ma has_one, a mark ma belongs.

Jest dokładnie tak jak napisałeś i wyrzuca błąd.

Nie kojarzę (i nie widzę w dokumentacji), żeby na “metodach relacji” dało się używać new.
Prawdopodobnie chodzi Ci o metody build_ i create_
(dla has_one i Twojego przykładu będą to @student.build_mark(attributes={}) i @student.create_mark(attributes={}).
Zawsze też możesz użyć @student.mark = Mark.new
Szczegóły: http://guides.rubyonrails.org/association_basics.html#has_one-association-reference

Mam metody relacji w innych modelach has_many i belongs_to i bez problemu działa new.

API AR nie przewiduje new na metodzie relacji dla has_one, masz build_xxx, create_xxx i xxx=, szczegóły w linku w poprzednim poście.
Na has_many jest jak piszesz, collection.new (alias collection.build).