0

我正在尝试使用 FriendlyId gem 为特定模型教师构建虚荣网址以显示

 www.mysite.com/teachers/{first_name}-{last_name}

代替

wwww.mysite.com/teachers/{id}

我遇到的问题是关于 {first_name} / {last_name} 的信息存储在通过用户访问的联系人表中,而不是在教师的表中。表之间的关系如下:

- Teacher belongs_to :user 
- User has_one :contact

我在我的教师模型中添加了:

 extend FriendlyId
 friendly_id :full_name_to_url, use: :slugged

所以 FriendlyId 调用方法 full_name_to_url 来创建 slug:

def full_name_to_url
"#{self.user.contact.first_name.downcase.gsub(" ","-")}-#{self.user.contact.last_name.downcase.gsub(" ","-")}"
end

尝试应用并保存对现有记录的所有更改时,我收到以下消息:Teacher.find_each(&:save)

 NoMethodError: undefined method `contact' for nil:NilClass

我想我的方法有问题吗?

4

0 回答 0