2009-07-23 36 views
12

Tôi có hai mô hình, TreeNode và User. Mỗi người dùng has_one TreeNode, là gốc của cây.đường ray đổi tên liên kết

class TreeNode 
    acts_as_tree 
    belongs_to :user 
end 

class User 
    has_one :tree_node 
end 

Tôi muốn có thiết lập này để ray sẽ làm cho hiệp hội để tôi có thể làm điều gì đó như

User.first.tree 

thay vì

User.first.tree_node 

Làm thế nào người ta sẽ đi về làm việc một cái gì đó như thế này?

Trả lời

23
has_one :tree, :class_name => "TreeNode" 

Hãy ghi nhớ, điều này giả định một chìa khóa nước ngoài gọi là user_id trong bảng tree_nodes.

Sửa: Nếu điều đó không làm việc, bạn có thể cần phải xác định chính nước ngoài (:foreign_key => :user_id), nhưng tôi không nghĩ vậy.

+0

Cảm ơn, điều đó hoạt động! Tôi biết có cách dễ dàng để làm điều đó. –

3

Dường như: class_name đã được thay thế bằng: source.

+4

Theo [hướng dẫn liên kết đường ray] (http://guides.rubyonrails.org/association_basics.html), cả hai: class_name và: source vẫn tồn tại. : nguồn là để chỉ định liên kết nguồn của ': has_one ...: through' –

Các vấn đề liên quan