命名空间中有两个模型,它们需要与has_and_belongs_to_many以多对多关系关联.它们是这样创建的:
$ rails generate model namespace/model_a name:string
# app/models/namespace/model_a.rb
class Namespace::ModelA < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
和
$ rails generate model namespace/model_b name:string
# app/models/namespace/model_b.rb
class Namespace::ModelB < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能成功建立多对多关系?
activerecord many-to-many namespaces has-and-belongs-to-many ruby-on-rails-4
考虑一个输入列表X,它由Tx类型的对象组成,您需要为其运行以下几个函数之一,y_a = A(x),y_b = B(x),等等...(所有这些输出对象的(Ty)生成输出列表Y。最后,转换函数的选择取决于列表中元素的索引。
理想情况下,解决方案将是单线解决方案(Linq,我在找您)。
将其放入代码中:
public OtherType ConversionA (int n) {
}
public OtherType ConversionB (int n) {
}
class MyClass {
public MyClass (List<int> values)
: this (values.ConvertAllWithIndex((value, index) =>
UseConversionA (index) ? ConversionA (value) : ConversionB (value)) {
}
public MyClass (List<OtherType> things) {
...
}
bool UseConversionA (int index) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我意识到此示例代码的一个更简单的解决方案是在调用MyClass并简单地传递Y之前执行从X到Y的转换,但是请耐心等待,因为这是一个人为的示例,用于查看是否有人知道复制ConvertAll的方法。以目标元素的索引为条件。
另外,可以创建对Tx的扩展以使用索引创建自定义ConvertAll,但是我很好奇是否可以找到一种使Linq(或其他方式)实现此目标的方法。