我有一个存储注释的表,注释可以来自另一个用户,或者是另一个在此应用中是独立实体的配置文件.
我原来的想法是该表将同时具有user_id和profile_id字段,因此如果用户提交注释,则会给user_id留下profile_id为空
这是对的,错的,还有更好的方法吗?
在我的Rails 4应用程序中,我有以下模型:
User
has_many :administrations
has_many :calendars, through: :administrations
has_many :comments
has_many :calendar_comments, through: :calendars, :source => :comments
Calendar
has_many :administrations
has_many :users, through: :administrations
has_many :posts
has_many :comments, through: posts
has_many :ads
Administration
belongs_to :user
belongs_to :calendar
Post
belongs_to :calendar
has_many :comments, as: :commentable
Ad
belongs_to :calendar
has_many :comments, as: :commentable
Comment
belongs_to :commentable, polymorphic: true
belongs_to :user
Run Code Online (Sandbox Code Playgroud)
我需要访问comments的是belong_to一个ad从calendar的ad belongs_to.
这就是我在Calendars#Index行动中要做的事情:
@posts_comments = @user.calendar_comments.where(commentable_type: "Post").order("created_at DESC").limit(5)
@ads_comments …Run Code Online (Sandbox Code Playgroud) activerecord ruby-on-rails has-many-through polymorphic-associations ruby-on-rails-4
这是我第一次使用Rails,我想知道是否可以在一个SQL查询中加载一个多态关联?它们之间的模型和关联足够基本:资产模型/表可以通过多态关联引用内容(图像,文本或音频),即
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true end
图像,文本,音频定义如下:
class Image < ActiveRecord::Base :has_one :asset, :as => :content end
当我尝试加载图片时,请这样说:
Image.first(
:conditions => {:id => id},
:include => :asset
)
它指定了两个查询,一个用于检索Image,另一个用于检索资产(FYI,如果我指定a,也会发生这种情况:joins).根据我的理解,ActiveRecord这样做是因为它不知道Image和Asset之间存在一对一的关联.有没有办法强制连接并一次检索2个对象?我也尝试使用自定义选择连接,但我最终必须手动创建ActiveRecord模型及其关联.
ActiveRecord是否提供了这样做的方法?
我的架构中有Articles和Journals可与被标记Tags.这需要has_many through:与我的Tagging连接表的多态关系关联.
好的,这是一个简单且记录良好的部分.
我的问题是Articles可以同时拥有主标签和子标签.主要标签是我最感兴趣的,但我的模型也需要跟踪这些子标签.子标签只是描述Article不太重要的标签,但来自同一个全局池Tags.(事实上,一个Article人的主要标签可能是另一个人的子标签).
实现这一点需要Article模型与模型有两个关联,Tagging并且两个has_many through:关联Tags(即#tagssub-tags)
这是我到目前为止所做的,虽然有效但不保持主标签和子标签分开.
class Article < ActiveRecord::Base
has_many :taggings, as: :taggable
has_many :tags, through: :taggings
has_many :sub_taggings, as: :taggable, class_name: 'Tagging',
source_type: 'article_sub'
has_many :sub_tags, through: :sub_taggings, class_name: 'Tag', source: :tag
end
class Tagging < ActiveRecord::Base
# id :integer
# taggable_id :integer
# taggable_type :string(255)
# tag_id :integer
belongs_to :tag …Run Code Online (Sandbox Code Playgroud) tagging activerecord ruby-on-rails has-many-through polymorphic-associations
实体是否可能与多个表具有一对一多态关联.假设一个实体有两个特定的列,用于:
link_type - 标识应与哪个表关联的列
link_id - 在标识表后定义表的外键的列.
我正在尝试设置一个选择菜单以将 ImageGallery 与产品相关联。ImageGallery 是多态的,因为它在几个模型之间共享。Formtastic 似乎对要做什么感到非常困惑。它试图调用一个名为 Galleryable 的方法,这是我的多态关联的名称,产品模型上的 _id (galleryable_id)。
产品
class Product < ActiveRecord::Base
has_one :image_gallery, as: :galleryable, dependent: :destroy
accepts_nested_attributes_for :image_gallery, :allow_destroy => true
end
Run Code Online (Sandbox Code Playgroud)
画廊
class ImageGallery < ActiveRecord::Base
belongs_to :galleryable, polymorphic: true
validates :title, presence: true
has_many :images, as: :imageable, dependent: :destroy
accepts_nested_attributes_for :images, :allow_destroy => true, reject_if: lambda { |t| t['file'].nil? }
end
Run Code Online (Sandbox Code Playgroud)
主动管理表单
form do |f|
f.inputs "Details" do
f.input :name
f.input :category
f.input :price
f.input :purchase_path
f.input :video_panels
f.input :image_panels
f.input :image_gallery, :as => …Run Code Online (Sandbox Code Playgroud) ruby-on-rails polymorphic-associations formtastic activeadmin
我正在尝试优化休眠查询,并遇到了休眠使查询比我预期的更复杂的问题。
我有一个基类WorkUnit和几个子类CheckEmployee,Meeting,HomeCareRequest 和 WorkUnitAssignment指向WorkUnit。
这是课程的草图:
@Entity
@Table(name = "WORK_UNIT_ASSIGNMENT")
public class WorkUnitAssignmentEntity {
private WorkUnitEntity workUnit;
...
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinColumn(name = "WORK_UNIT_A_WORK_UNIT_ID")
public WorkUnitEntity getWorkUnit() {
return workUnit;
}
}
@Entity
@Table(name = "WORK_UNIT")
@Inheritance(strategy = InheritanceType.JOINED)
public class WorkUnitEntity {
}
@Entity
@Table(name = "CHECK_EMPLOYEE")
@PrimaryKeyJoinColumn(name="CHECK_EMPLOYEE_ID")
public class CheckEmployee extends WorkUnitEntity {
}
@Entity
@Table(name = "MEETING")
@PrimaryKeyJoinColumn(name = "MEETING_ID")
public class MeetingEntity extends WorkUnitEntity {
}
@Entity …Run Code Online (Sandbox Code Playgroud) 假设我们有两个类,每个类实现一个接口,IParent,如下所示:
public class Foo : IParent
{
public long Id { get; set; }
...
public IList<Child> Children { get; set; }
...
}
public class Bar : IParent
{
public long Id { get; set; }
...
public IList<Child> Children { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
并且具有IParent类型的父属性的子类,即父类可以是Foo或Bar:
public class Child
{
public long Id { get; set; }
...
public IParent Parent { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
如何使用FluentNHibernate映射此Parent属性?
我发现这个问题似乎有类似的要求,但没有涉及接口.答案对我来说没有意义,或者在这种情况下似乎适用.
我尝试使用ReferencesAny如下实现映射:
public class ChildMap : …Run Code Online (Sandbox Code Playgroud) 简而言之,它由几个多对多的多态关系组成,如下所示:
许多resources可以有许多sources,并且数据透视表sourceables包含使数据透视表中的每一行唯一的信息catalog_number。lot_number许多资源也可能来自相同来源或不同来源,通过数据透视表上的目录号和批号来区分。
许多resources也可以有许多publications附加到它,通过publicationables表与notes枢轴表
许多出版物也可以描述资源的来源。
我的问题:
sourceables我应该如何保存数据透视表行之间的sourceables关系publications?sourceables来链接到吗publications?activerecord ×3
hibernate ×2
activeadmin ×1
c# ×1
database ×1
doctrine-orm ×1
eloquent ×1
formtastic ×1
java ×1
jpa ×1
laravel ×1
many-to-many ×1
nhibernate ×1
optimization ×1
tagging ×1