Tôi đang theo dõi http://railscasts.com/episodes/102-auto-complete-associationRails 3 find_or_create_by
Mọi thứ đều ổn. Tôi đang cố gắng tạo hóa đơn và cũng là khách hàng khi đang bay. Nó hoạt động. Mọi thứ tuyệt vời.
client belongs_to chiếm hóa đơn belongs_to tài khoản hóa đơn belongs_to client
Buuut, cả hai mô hình (Client và Invoice) có một thuộc tính bắt buộc: ACCOUNT_ID.
Khi tôi đang cố gắng để tạo ra một khách hàng mới một cách nhanh chóng tôi nhận được một lỗi :client_id: - can't be blank
Lý do tôi nhận được lỗi này đó là bởi vì một khách hàng không thể được tạo ra bởi vì nó đòi hỏi một ACCOUNT_ID trong Mô hình khách hàng. Nếu tôi xóa dòng này validates :account_id, :presence => true
trong mô hình Khách hàng thì hóa đơn sẽ được thêm nhưng Khách hàng không có account_id.
tôi có này trong clients_controller.rb trong tạo hành động để thiết lập một giá trị mặc định @client.account_id = current_user.account_id
invoice.rb
validates :account_id, :presence => true
validates :client_id, :presence => true
def client_name
client.name if client
end
def client_name=(name)
self.client = Client.find_or_create_by_name(name) unless name.blank?
end
Tài khoản đã được tạo. Người dùng đã đăng nhập đã có account_id và có thể được truy cập như thế này 'current_user.account_id'. Vấn đề là nhận được cùng một account_id đó vào bản ghi khách hàng mới. Tôi sẽ chơi xung quanh với mã của bạn ngay bây giờ. – leonel
Tôi có điều này trong mô hình hóa đơn của tôi 'def organization_name = (name); self.organization = Organization.find_or_create_by_name (tên); trừ khi name.blank ?; end' Không thể truy cập current_user trong mô hình. – leonel
nếu bạn tạo bản ghi khách hàng mới bắt đầu từ bản ghi tài khoản, sau đó nó sẽ kế thừa nó là account_id ... xem ở trên. – Tilo