Tag: 协会

Rails管理员 – 删除相关对象

我正在我的一个网站上使用Rails Admin 。 到目前为止它很棒,但我无法弄清楚如何从编辑页面中删除相关对象。 示例:我有两个模型Property和PropertyImage。 class Property has_many :property_images, :dependent => :destroy end class PropertyImage belongs_to :property end 我可以在编辑屏幕上找到任一模型的实例,我可以从列表视图中删除PropertyImages。 但是当我编辑一个Property时,我希望能够删除与它关联的PropertyImage。 有没有办法在rails_admin中启用此function? 这是我能看到的。 注意:“删除图像”按钮不是我想要的 – 它只是因为有一个上传关联到图像字段。 它只编辑PropertyImage。

棘手的问题答案协会?

所以我有3个型号.. 用户模型,问题模型和答案模型。 用户有很多问题,而问题属于用户 一个问题有一个答案,答案属于问题。 现在我已经创建了适用于所有用户的默认种子问题,即@questions = Question.all 每个用户都可以看到这些相同的问题,现在我怎样才能让每个用户在这些问题与问题没有直接关联时写下他们自己的答案? 即u.questions.answer返回答案未定义。

对称的,自我指涉的HABTM关系

在我的架构中,我有一个名为Imprintables的模型。 在这个模型中,我有这种自我指涉关系: class Imprintable < ActiveRecord::Base has_and_belongs_to_many :coordinates, class_name: 'Imprintable', association_foreign_key: 'coordinate_id', join_table: 'coordinates_imprintables' … end 在可打印的创建/编辑表单中,我有一个选择字段,用户可以在其中选择坐标imprintables(坐标用于标识与正在创建/编辑的imprintables类似的imprintables)。 我的问题是,如果我有一个可以打印的A和可打印的B,当我创建A并将列表B作为一个可以打印的坐标时,我希望能够查看B的编辑表单并查看A也列为坐标。 我已经尝试修改控制器的更新并创建操作以将两对id插入到链接器表(coordinates_imprintables)中。 例如,如果A.id = 1且B.id = 2,则执行一些sql,如: INSERT INTO coordinates_imprintables (imprintable_id, coordinate_id) VALUES (1, 2) INSERT INTO coordinates_imprintables (imprintable_id, coordinate_id) VALUES (2, 1) 但我无法让它工作,因为我不知道如何知道用户何时尝试删除或插入坐标,我甚至不确定这是否是正确的答案。 Railscasts略有帮助,这似乎是一个棘手的案例,因为我有一个具有自我指涉关系的模型也是对称的。 谢谢你的时间!

Ruby on Rails Association Form

所以我正在使用ROR创建一个Web应用程序,我无法弄清楚这个表单的正确语法是什么。 我目前正在为评论和post制作一种关联类型的代码。 current_user.id %>

Rails has_many:通过和在Join模型上设置属性

与此问题类似,如何在此上下文中保存之前在连接模型上设置属性? class Post :post_assets has_many :featured_images, :through => :post_assets, :class_name => “Asset”, :source => :asset, :conditions => [‘post_assets.context = ?’, “featured”] end class PostAssets < ActiveRecord::Base belongs_to :post belongs_to :asset # context is so we know the scope or role # the join plays validates_presences_of :context end class Asset :post_assets end 我只想做到这一点: @post = Post.create!(:title […]

在rails中销毁之前检查所有关联

我的应用程序中有一个重要的模型,有许多关联。 如果我想检查before_destroy回调中的所有引用,我必须执行以下操作: has_many :models_1 has_many :models_2 mas_many :models_3 …. …. has_many :models_n before_destroy :ensure_not_referenced def :ensure_not_referenced if models_1.empty? and models_2.empty? and models_3.empty? and … and models_n.empty? return true else return false errors.add(:base,’Error message’) end end 问题是,有没有办法立即执行所有validation? 感谢名单!

渴望与Active Model Serializers加载关联

背景 我有一个带有深层嵌套关联的rails应用程序。 .-< WorkPeriod Timecard -< Week -< Day -<–< Subtotal `-< Adjustment -< (has many) 我正在使用Active Model Serializer来构建API。 在客户端,我想一次性加载时间卡及其所有关联。 目前我的序列化器看起来像这样, class TimecardSerializer < ActiveModel::Serializer embed :ids, include: true has_many :weeks end class WeekSerializer < ActiveModel::Serializer embed :ids, include: true has_many :days end # … etc … 问题 这一切都找到了,除了没有任何东西急切加载。 因此,它最终会针对每个请求对数据库进行大量调用。 对于每周,它会单独请求该周的日期。 并且对于每一天,它单独请求它的work_periods,小计和调整。

belongs_to和has_many属于同一模型

我想知道是否有办法用rails做到这一点。 基本上我有一个用户模型和一个事件模型。 事件由用户创建,我希望在事件模型中有一个外键(user_id),用于指示创建事件的人员。 此外,事件可以有许多用户参加,因此事件模型变得类似 belongs_to :user has_many :users, :through => :guests #suppose i have the guest model 用户模型看起来像 has_many :events, :through => :guests 我还没有尝试过这个协会,但我希望能够说 e = Event.find(1) e.creator #returns the user who created this event 代替 e.user 有没有办法让我这样做?

has_many通过关联依赖的破坏在谁叫毁灭的条件下

有没有办法在before_destroy钩子中检查哪个对象(类)被称为destroy ? 在下面的例子中,当一个patient被摧毁时,他们的appointments也是如此(这就是我想要的); 但是,如果有任何与该physician相关的appointments ,我不想让physician被销毁。 再次,有没有办法在before_destory回调中进行这样的检查? 如果没有,是否还有其他方法可以根据呼叫的“方向”(即基于谁呼叫)完成此“破坏检查”? class Physician < ActiveRecord::Base has_many :appointments, dependent: :destroy has_many :patients, through: :appointments end class Patient < ActiveRecord::Base has_many :appointments, dependent: :destroy has_many :physicians, through: :appointments end class Appointment < ActiveRecord::Base belongs_to :patient belongs_to :physician before_destroy :ensure_not_referenced_by_anything_important private def ensure_not_referenced_by_anything_important unless patients.empty? errors.add(:base, 'This physician cannot be deleted because […]

Rails – 如何显示关联模型的属性

我想在Rails 4中创建一个应用程序。 我刚刚问了这个相关的问题并得到了明确的答案。 我似乎无法理解如何采用这种逻辑并将其应用于其他地方。 Rails如何显示父对象的属性 我有一个用户模型,个人资料模型,项目模型和大学模型。 协会是: Profile belongs to university Profile belongs to user University has many profiles University has many projects Projects HABTM user Projects belong to universities 在我的项目控制器中,我定义@creator如下: def create logger.debug “xxx create project” #authorise @project @project = Project.new(project_params) @project.creator_id = current_user.id @project.users << current_user respond_to do |format| if @project.save format.html { […]