[Dbix-class] might_have and is_nullable
Peter Rabbitson
rabbit+dbic at rabbit.us
Wed Nov 17 12:41:25 GMT 2010
matthew couchman (JIC) wrote:
> Hi,
>
>
>
> I’m getting the warning:
>
>
>
> "might_have/has_one" must not be on columns with is_nullable set to
> true. This might indicate an incorrect use of those relationship helpers
> instead of belongs_to.
>
>
>
> and the documentation also tells me that this is naughty. But surely by
> saying that something /might/ have something it implies that it also
> might /not/ have that something so it needs to be a nullable value. Do I
> just need to specify it in a different way?
>
might_have/has_one are *equivalent* to has_many, they just have different
return expectancy (belongs_to is the opposite relationship to all 3).
Imagine tables
CRASH_REPORT (id INTEGER, report TEXT)
DUI_REPORT (id INTEGER, report TEXT, crash_report_fk INTEGER IS NULL)
then CRASH_REPORT->might_have (dui_rep => DUI_REPORT...)
and DUI_REPORT->belongs_to (crash_rep => CRASH_REPORT ... { join_type => 'left' })
indicating that a crash may have an accompanying DUI, and a DUI may be filed
under a crash or standalone.
belongs_to is the only relationship allowed on the "I have a column
dedicated to hold someone else's id" side. Patches to make the documentation
clearer on this point sorely needed.
Cheers!
More information about the DBIx-Class
mailing list