8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

当关联属性发生改变时获取 slug 进行更新

Dou Xu-MSFT 3月前

31 0

我有 Attraction 和 Venue 模型。它们的关联是:Attractionbelongs_to :venueVenuehas_many :attractions,dependent: :nullify我正在使用friendly_id gem 为两者添加 slug。它们...

我有 Attraction 鸭子 Venue 模型。他们的协会是:

Attraction
belongs_to :venue
Venue
has_many :attractions, dependent: :nullify

我使用 friendly_id gem 为两者添加了 slug。添加方式如下:

Attraction
friendly_id :slugged_name_and_venue, use: :slugged
Venue
friendly_id :slugged_name_and_location, use: :slugged

我遇到的问题是,由于 Attraction slug 包含 name location_1 venue ,如果 name location_1 属性发生更改,则 Attraction 的 slug 不正确。我需要更新它们以始终保持同步。

  1. p4

  2. p5

我尝试了多种选项,但没有一个能够真正成功更新相关的景点。

我最近的尝试是这样的:

Venue
  def should_generate_new_friendly_id?
    slug.blank? || name_changed? || location_1_changed?
    end

    after_update :update_attraction_slugs, if: :should_update_attraction_slugs?

  private

  def should_update_attraction_slugs?
    saved_change_to_name? || saved_change_to_location_1?
  end

  def update_attraction_slugs
    attractions.find_each(&:save)
  end
Attraction
    def should_generate_new_friendly_id?
        slug.blank? || slug_changed? || name_changed? || full_name_changed? || venue_id_changed? || venue_name_or_location_1_changed?
    end

  def venue_name_or_location_1_changed?
    saved_change_to_attribute?(:venue_id) || venue.saved_change_to_name? || venue.saved_change_to_location_1?
  end

有人能帮我吗?

提前致谢!

帖子版权声明 1、本帖标题:当关联属性发生改变时获取 slug 进行更新
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Dou Xu-MSFT在本站《ruby-on-rails》版块原创发布, 转载请注明出处!
最新回复 (0)
  • nbk 3月前 0 只看Ta
    引用 2

    我不明白你认为这应该如何工作。\'我遇到的问题是,因为景点 slug 包含场地关联的 name 和 location_1 属性\'。slug 必须是唯一的,但你有一个一对多关联。当获取景点时

返回
作者最近主题: