You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The documentation states that your ActiveRecord model should implement a class method "sets":
# A model class is expected to provide a method Model.sets that
# returns all the sets the model supports. See the
# activerecord_provider tests for an example.
However, the find method basically composes a query condition that, if the OAI request contains a "set" parameter, looks like:
AND set = '<set_name>'
So it is assuming your ActiveRecord model has an attribute (and hence a database column) "set".
Is this what we want? This amounts to per-record granularity- you need to have the "set" value set per record that you want returned. Conceptually I think of a model as being a set, and hence all it's record belong.
I think we should remove this. I'm happy to supply a pull request if no one has an argument in favour of keeping it.
It shouldn't be too hard to check if the results returned by model.sets are ActiveRecord models, use reflection to find the association back to model (eg. set.records) and then use it to perform find.
Activity
tjdett commentedon Aug 16, 2012
@seandmccarthy I'm looking at this issue right now, as I have I case where records could conceptually belong to more than one set.
My intention is provide an additional method for defining sets that uses ActiveRecord associations. Something along the lines of:
It shouldn't be too hard to check if the results returned by
model.setsare ActiveRecord models, use reflection to find the association back tomodel(eg.set.records) and then use it to performfind.tjdett commentedon Aug 16, 2012
Pull-request #18 splits out this behaviour into two variants:
In model-based sets, the sets are ActiveRecord models which have an association back to records. They preserve the example
DCSetbehaviour.In attribute-based sets, the
setattribute to determine set membership (and the class method simply needs to provide a list of those sets somehow).